package com.carsa.blackberry.domain.dto;

import java.util.Enumeration;
import java.util.Vector;

import com.carsa.blackberry.util.XMLHandler;
import com.carsa.blackberry.util.XMLPortable;

/**
 * @author Nahuel Barrios.
 * @since 03/09/2010.
 * @version 1.0
 */
public class EntregasQueueElementDTO implements XMLPortable {

    private static final String XML_ELEMENT_DRIVER            = "driver";
    private static final String XML_ELEMENT_LEGAJO_AYUDANTE   = "legajoAyudante";
    private static final String XML_ELEMENT_ENTREGAS_X_LEGAJO = "entregasXLegajo";

    private Vector              _entregas                     = new Vector();
    private String              _legajoAyudante;

    public EntregasQueueElementDTO(String xmlSource, boolean isXML) {
	this.initializeFromXML(xmlSource);
    }

    public EntregasQueueElementDTO(String legajoAyudante) {
	this._legajoAyudante = legajoAyudante;
    }

    public void addEntrega(EntregaDTO unaEntrega) {
	this._entregas.addElement(unaEntrega);
    }

    /**
     * @param vbeln
     *            El numero de la entrega que queremos obtener.
     * @return
     */
    public EntregaDTO getEntrega(String vbeln) {
	Enumeration entregas = this._entregas.elements();
	while (entregas.hasMoreElements()) {
	    EntregaDTO unaEntrega = (EntregaDTO) entregas.nextElement();
	    if (unaEntrega.getVbeln().equals(vbeln))
		return unaEntrega;
	}

	return null;
    }

    /**
     * @return the _entregas
     */
    public Vector get_entregas() {
	return _entregas;
    }

    /**
     * @param entregas
     *            the _entregas to set
     */
    public void set_entregas(Vector entregas) {
	_entregas = entregas;
    }

    /**
     * @return the _legajoAyudante
     */
    public String getLegajoAyudante() {
	return _legajoAyudante;
    }

    /**
     * @param legajoAyudante
     *            the _legajoAyudante to set
     */
    public void set_legajoAyudante(String legajoAyudante) {
	_legajoAyudante = legajoAyudante;
    }

    public void initializeFromXML(String xmlSource) {
	XMLHandler xml = new XMLHandler(xmlSource);

	_legajoAyudante = xml.getElementValue(XML_ELEMENT_LEGAJO_AYUDANTE);

	xml = new XMLHandler(xml.getElementValue(XML_ELEMENT_ENTREGAS_X_LEGAJO));
	int elementsCount = xml.getElementCount();

	int idx = 0;
	for (idx = 0; idx < elementsCount; idx++) {
	    EntregaDTO anElement = new EntregaDTO(xml.getFirstElementValueOverIteration());
	    _entregas.addElement(anElement);
	}
    }

    public String toXMLString() {
	XMLHandler xml = new XMLHandler(XML_ELEMENT_DRIVER, null, null);

	xml.addElementAtRoot(XML_ELEMENT_LEGAJO_AYUDANTE, null, this._legajoAyudante);

	XMLHandler xmlEntregas = new XMLHandler(XML_ELEMENT_ENTREGAS_X_LEGAJO, null, null);
	Enumeration elements = _entregas.elements();
	while (elements.hasMoreElements()) {
	    EntregaDTO unaEntrega = (EntregaDTO) elements.nextElement();

	    xmlEntregas.addElementAtRoot(unaEntrega.toXMLString());
	}
	xml.addElementAtRoot(xmlEntregas.toXMLString());

	return xml.toXMLString();
    }
}
